package com.liu.huawei.mas;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import com.huawei.eie.api.sm.DBSMProxy;
import com.huawei.eie.api.sm.SmReceiveBean;
import com.huawei.eie.api.sm.SmSendBean;
import com.huawei.eie.api.sm.SmSendResultBean;

public class DBSMProxyTest {
	public static void main(String[] args) throws Exception {
		DBSMProxy smproxy = new DBSMProxy();
		Map paras = new HashMap();
		// MAS短信接口DB的URL。
		paras.put("url", "jdbc:microsoft:sqlserver://10.71.99.70:1433;DatabaseName=db_customsms");
		// MAS短信接口db登录用户名。
		paras.put("user", "customsms");
		// MAS短信接口db登录的密码。
		paras.put("password", "123456");

		// 以下示例提供了3种初始化连接的方法。
		smproxy.initConn(paras);// 通过上面设定的参数初始化。
		// smproxy.initConn();//自动查找配置文件的方式初始化，参见上面函数说明。
		// smproxy.initConn("./apiconf/smapiconf.xml");// 手动查找配置文件的方式，参见上面函数说明。

		// 登录MASmas短信应用接口，业务登录用户名、业务登录密码。
		smproxy.login("admin", "0");

		testSend(smproxy, 1);
		
		// 退出登录。
		smproxy.logout();

		// 销毁连接。
		smproxy.destroy();

	}

	/**
	 * 发送测试代码样例。
	 * 
	 * @param smproxy
	 *            DBSMProxy
	 * @param count
	 *            int
	 * @throws Exception
	 */
	public static final void testSend(DBSMProxy smproxy, int count) throws Exception {
		SmSendBean bean = new SmSendBean();
		ArrayList<String> arrs = new ArrayList();
		// 构造多个手机号码，目的地址。
//		for (int index = 0; index < count; index++) {
//			arrs.add("1380000" + index);
//		}
		arrs.add("18692809591");
		String[] addrs = new String[arrs.size()];
		arrs.toArray(addrs);
		bean.setSmDestAddrs(addrs);

		// 构造短信内容。
		bean.setSmMsgContent("cnusms content test info...by cnsunet Liubo");
		long firstTime = System.currentTimeMillis();

		// 调用发送接口。
		int[] ret = smproxy.sendSm(bean);
		long lastTime = System.currentTimeMillis();
		System.out.println("======================================");
		System.out.println(" inserted:" + count + " records,consumed " + (lastTime - firstTime) + " ms");
		System.out.println(" avg Speed:" + (count) * 1000.0 / (lastTime - firstTime));
		System.out.println("======================================");
		System.out.print("returned sm_id(s):");
		for (int index = 0; index < ret.length; index++) {
			System.out.print(" " + ret[index]);
		}
		System.out.println("");
	}

	/**
	 * 查询消息发送结果，代码样例。
	 * 
	 * @param smproxy
	 *            DBSMProxy
	 * @throws Exception
	 */
	public static final void testQuerysmResult(DBSMProxy smproxy) throws Exception {
		// 构造查询条件，入口参数详细说明参见上面函数说明。
		SmSendResultBean[] beans = smproxy.querySmsResult(-1,
				new java.util.Date(System.currentTimeMillis() - 86400000 * 30L),
				new java.util.Date(System.currentTimeMillis()), null, null);
		for (SmSendResultBean bean : beans) {
			System.out.println("bean:" + bean.getSmMsgContent());
		}
	}

	/**
	 * 查询上行消息代码样例。
	 * 
	 * @param smproxy
	 *            DBSMProxy
	 * @param count
	 *            int
	 * @throws Exception
	 */
	public static final void testGetReceivedSm(DBSMProxy smproxy, int count) throws Exception {// 如下按照多种查询条件获取短信查询情况，做代码演示。
		SmReceiveBean[] beans = smproxy.getReceivedSms(count, new java.util.Date(System.currentTimeMillis() - 86400000),
				new java.util.Date(System.currentTimeMillis()), "1860", null);
		System.out.println("get received sms in a day where sp number likes \'1860\',max count is" + count
				+ ",sms count:" + beans.length);

		beans = smproxy.getReceivedSms(count, new java.util.Date(System.currentTimeMillis() - 86400000),
				new java.util.Date(System.currentTimeMillis()), null, "13");
		System.out.println("get received sms in a day where telno likes \'13\',max count is" + count + ",sms count:"
				+ beans.length);

		beans = smproxy.getReceivedSms(-1, null, null, null, null);
		System.out.println("get all received sms,sms count is:" + beans.length);
	}

}
